package us.kg.kotoriforest.spring.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Value;

/**
 * @author Kotori rotroutine@163.com
 * @since 2025/1/25
 */
@NoArgsConstructor
@AllArgsConstructor
@Data
// classpath: 类路径 只能查找当前模块的类路径
// classpath*: 可以查找所有模块的类路径
public class Dog {
    /*
        @Value的基本用法
            0. @AutoWired 自动装配只适用于IOC组件 而不适用于基本数据类型 所以基本数据类型的注入需要我们手动处理
            1. @Value("字面量") 直接赋值 用的比较少 感觉不如 = 赋值
            2. @Value("${key:default}") 从配置文件中获取键对应的值 如果没找到则使用冒号后的默认值 用的比较多
            3. @Value("#{SpEL}") Spring Expression Language Spring表达式 如果要使用静态类的方法 需要使用T(全类名)来调用
     */
    @Value("#{T(java.util.UUID).randomUUID().toString()}")
    private String id;

    @Value("${dog.name:旺财}")
    private String name;

    @Value("${dog.age:20}")
    private Integer age;

    @Value("${dog.color:yellow}")
    private String color;
}
